본문으로 건너뛰기

Q. 변수 호이스팅에 대해 설명해 주세요.

🧑🏻‍💻 Answer.


✅ 정의

  • 변수 호이스팅은 코드 실행 전 코드 평가 단계에서 변수가 선언되어, 변수가 스코프의 최상단으로 끌어올려진 것 같이 보이는 현상입니다.

✅ var, let, const 예시

  • var, let, const 모두 코드 실행 전, 실행 컨텍스트 변수 객체에 등록이 되어 모두 호이스팅이 됩니다.

  • var의 경우, 선언과 동시에 undefined 값으로 초기화됩니다. 따라서 var 변수 선언 전 변수 접근 시, ReferenceError가 발생하지 않습니다.

  • 반면 let과 const의 경우, 선언 이후 값이 초기화되지 않습니다. 따라서 let과 const 변수 선언 전 변수 접근 시, Temporal Dead Zone 시맨틱에 의해 ReferenceError가 발생합니다.